/*
 * @Descripttion: 数据操作（关注、收藏等）
 * @version: 1.0.0
 * @Author: liuchenguang
 * @Date: 2022-02-09
 */
import { updateOperateState } from '@/api/operateState'

export const mixin_operate_state = {
  data() {
    return {
      // 处于列表页时传入的sourceId字段名
      listFieldKey: 'id'
    }
  },
  methods: {
    /** 进行关注、取消关注操作后 */
    afterMark() {},
    /** 关注、取消关注 */
    mark(sourceType, sourceId) {
      const param = {
        sourcetype: sourceType,
        sourceid: sourceId,
        operatetype: 'mark'
      }
      updateOperateState(param)
        .then((res) => {
          if (res.success) {
            this.$tap.message(res.message === 'on' ? '关注成功！' : '取消关注成功！')
            // 处于编辑页时
            if (this.model) {
              this.$set(this.model, 'markflag', res.message === 'on')
            }
            // 处于列表页时
            if (this.datas) {
              const index = this.datas.findIndex((v) => v[this.listFieldKey] === sourceId)
              if (index > -1) {
                this.datas[index].markflag = res.message === 'on'
              }
            }
            this.afterMark()
          } else {
            this.$tap.alert(res.message, 'warning')
          }
        })
        .catch((err) => {
          console.error(err)
        })
    }
  }
}
